package com.taozitongxue.collection;

import java.util.*;

public class CollectionDemo01 {

    public static void main(String[] args) {

        //    ArrayList

        ArrayList<String> list = new ArrayList<String>();
        //添加元素
        list.add("taoZi");
        list.add("tongXue");
        list.add("kunKun");

        //遍历集合
        for(int i=0;i<list.size();i++){
            String s = list.get(i);
            System.out.println(s);
        }
        //遍历集合for each
        for (String s : list) {
            System.out.println(s);
        }
        //删除元素
        list.remove("taoZi");

        for (String s : list) {
            System.out.println(s);
        }
        list.remove(0);
        for (String s : list) {
            System.out.println(s);
        }
        //修改元素
        list.set(0,"hhh");
        for (String s : list) {
            System.out.println(s);
        }

        System.out.println("********************************");
        // 创建一个集合
        LinkedList<String> linkedList = new LinkedList<String>();
// 添加元素
        linkedList.add("王二");
        linkedList.add("沉默");
        linkedList.add("陈清扬");

// 遍历集合 for 循环
        for (int i = 0; i < linkedList.size(); i++) {
            String s = linkedList.get(i);
            System.out.println(s);
        }
// 遍历集合 for each
        for (String s : linkedList) {
            System.out.println(s);
        }

// 删除元素
        linkedList.remove(1);
// 遍历集合
        for (String s : linkedList) {
            System.out.println(s);
        }

// 修改元素
        linkedList.set(1, "王二狗");
// 遍历集合
        for (String s : linkedList) {
            System.out.println(s);
        }

        // 创建一个新的HashSet
        HashSet<String> set = new HashSet<>();

// 添加元素
        set.add("沉默");
        set.add("王二");
        set.add("陈清扬");

// 输出HashSet的元素个数
        System.out.println("HashSet size: " + set.size()); // output: 3

// 判断元素是否存在于HashSet中
        boolean containsWanger = set.contains("王二");
        System.out.println("Does set contain '王二'? " + containsWanger); // output: true

// 删除元素
        boolean removeWanger = set.remove("王二");
        System.out.println("Removed '王二'? " + removeWanger); // output: true

// 修改元素，需要先删除后添加
        boolean removeChenmo = set.remove("沉默");
        boolean addBuChenmo = set.add("不沉默");
        System.out.println("Modified set? " + (removeChenmo && addBuChenmo)); // output: true

// 输出修改后的HashSet
        System.out.println("HashSet after modification: " + set); // output: [陈清扬, 不沉默]

        // 创建一个 HashSet 对象
        HashSet<String> hashSet = new HashSet<>();

// 添加元素
        hashSet.add("沉默");
        hashSet.add("王二");
        hashSet.add("陈清扬");
        hashSet.add("沉默");

// 输出 HashSet 的元素个数
        System.out.println("HashSet size: " + hashSet.size()); // output: 3

// 遍历 HashSet
        for (String s : hashSet) {
            System.out.println(s);
        }
//LinkedHashSet
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();

// 添加元素
        linkedHashSet.add("沉默");
        linkedHashSet.add("王二");
        linkedHashSet.add("陈清扬");

// 删除元素
        linkedHashSet.remove("王二");

// 修改元素
        linkedHashSet.remove("沉默");
        linkedHashSet.add("沉默的力量");

// 查找元素
        boolean hasChenQingYang = linkedHashSet.contains("陈清扬");
        System.out.println("set包含陈清扬吗？" + hasChenQingYang);

        // 创建一个 TreeSet 对象
        TreeSet<String> treeSet = new TreeSet<>();

// 添加元素
        treeSet.add("沉默");
        treeSet.add("王二");
        treeSet.add("陈清扬");
        System.out.println(treeSet); // 输出 [沉默, 王二, 陈清扬]

// 删除元素
        treeSet.remove("王二");
        System.out.println(treeSet); // 输出 [沉默, 陈清扬]

// 修改元素：TreeSet 中的元素不支持直接修改，需要先删除再添加
        treeSet.remove("陈清扬");
        treeSet.add("陈青阳");
        System.out.println(treeSet); // 输出 [沉默, 陈青阳]

// 查找元素
        System.out.println(treeSet.contains("沉默")); // 输出 true
        System.out.println(treeSet.contains("王二")); // 输出 false

        // 创建一个 HashMap 对象
        HashMap<String, String> hashMap = new HashMap<>();

// 添加键值对
        hashMap.put("沉默", "cenzhong");
        hashMap.put("王二", "wanger");
        hashMap.put("陈清扬", "chenqingyang");

// 获取指定键的值
        String value1 = hashMap.get("沉默");
        System.out.println("沉默对应的值为：" + value1);

// 修改键对应的值
        hashMap.put("沉默", "chenmo");
        String value2 = hashMap.get("沉默");
        System.out.println("修改后沉默对应的值为：" + value2);

// 删除指定键的键值对
        hashMap.remove("王二");

// 遍历 HashMap
        for (String key : hashMap.keySet()) {
            String value = hashMap.get(key);
            System.out.println(key + " 对应的值为：" + value);
        }

        // 创建一个 LinkedHashMap，插入的键值对为 沉默 王二 陈清扬
        LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("沉默", "cenzhong");
        linkedHashMap.put("王二", "wanger");
        linkedHashMap.put("陈清扬", "chenqingyang");

// 遍历 LinkedHashMap
        for (String key : linkedHashMap.keySet()) {
            String value = linkedHashMap.get(key);
            System.out.println(key + " 对应的值为：" + value);
        }

        // 创建一个HashMap，插入的键值对为 沉默 王二 陈清扬
        HashMap<String, String> hashMap01 = new HashMap<>();
        hashMap01.put("沉默", "cenzhong");
        hashMap01.put("王二", "wanger");
        hashMap01.put("陈清扬", "chenqingyang");

// 遍历 HashMap
        for (String key : hashMap01.keySet()) {
            String value = hashMap01.get(key);
            System.out.println(key + " 对应的值为：" + value);
        }


    }


}
